This disclosure relates to numerically controlled oscillators that generate function values in each clock cycle (or in each sampling cycle) by using a (i−1)th order recurrence equation, where i is an integer equal to or greater than 3.
Demands for frequency-adjustable sinusoidal wave signals with high spectrum purity are high for various systems such as digital modulation/de-modulation communication systems. Voltage-controlled oscillators (VCOs) used in phase-locked loops (PLLs) frequency synthesizers are well known. However, VCO is an analog circuit that can hardly get a benefit of area scaling even if miniaturization of semiconductor integrated circuits advances. Furthermore, lowering of power-supply voltage caused by the miniaturization makes the designing of analog circuit more-and-more difficult.
On the other hand, digital circuits can get full benefits of area scaling as the miniaturization advances. Further, lowering of power-supply voltage only has modest influences on the difficulty of designing digital circuits. Accordingly, NCOs (numerically controlled oscillators) that can generate sinusoidal wave signals using digital circuits draw increasing attentions.
A voltage-controlled oscillator outputs sinusoidal wave signals having frequencies determined by an input voltage, while a numerically controlled oscillator outputs sinusoidal signals expressed by discrete digital values having adjustable frequencies determined by input numerals. Signal-processing algorithms utilized in numerically controlled oscillators may be implemented as hardware devices and also as software algorithms. Accordingly, numerically controlled oscillators have a wide range of utilizations.
However, numerically controlled oscillators, which can only generate signals that are discrete in time, have difficulties in generating high-frequency signals because their operations are limited by the operation speed of logic circuits or the calculation speed of the software. The sampling theorem of discrete signals limits the output frequency of sinusoidal signal as high as about a few hundred mega hertz with the clock frequencies of current semiconductor integrated circuits. Further, internal calculation for sinusoidal wave signal generation algorithm is performed using quantized values. Accordingly, a numerically controlled oscillator may generate a signal that is significantly different from an ideal sinusoidal signal due to an accumulation of quantization errors during the calculations.
<First Related Art (Table Look-Up Method)>
Function values of sinusoidal wave signal are stored in a look-up table and read the function values stored at an address indicated by a pointer while updating the pointer in each clock cycle. Specifically, a sequence of function values, for example, cos(0), cos(1*Δω), cos(2*Δω), cos(3*Δω), . . . is stored in the look-up table. The address increases in each clock cycle and, when reached to a final value, returns to an initial value and increases again.
<Second Related Art (CORDIC Algorithm)>
A rotation angle per a sampling period Δω may be decomposed as:
                    Δω        =                              ∑                          k              =              0                                      m              -              1                                ⁢                                    w              k                        ⁢                          c              k                                                          (        1        )            
Here, ck is 1 or −1, and wk=arctan (½k). A rotation matrix can be expressed as:
                                                                                          ∏                                      k                    =                    0                                                        m                    -                    1                                                  ⁢                                  [                                                                                                              cos                          ⁢                                                                                                          ⁢                                                      w                            k                                                                                                                                                sin                          ⁢                                                                                                          ⁢                                                      w                            k                                                                                                                                                                                                                    -                            sin                                                    ⁢                                                                                                          ⁢                                                      w                            k                                                                                                                                                cos                          ⁢                                                                                                          ⁢                                                      w                            k                                                                                                                                ]                                            =                            ⁢                                                ∏                                      k                    =                    0                                                        m                    -                    1                                                  ⁢                                  cos                  ⁢                                                                          ⁢                                                            w                      k                                        ⁡                                          [                                                                                                    1                                                                                                              tan                              ⁢                                                                                                                          ⁢                                                              w                                k                                                                                                                                                                                                                                                        -                                tan                                                            ⁢                                                                                                                          ⁢                                                              w                                k                                                                                                                                          1                                                                                              ]                                                                                                                                              =                            ⁢                                                ∏                                      k                    =                    0                                                        m                    -                    1                                                  ⁢                                  cos                  ⁢                                                                          ⁢                                                            w                      k                                        ⁡                                          [                                                                                                    1                                                                                                                                              c                                k                                                            /                                                              2                                k                                                                                                                                                                                                                                                        -                                                                  c                                  k                                                                                            /                                                              2                                k                                                                                                                                          1                                                                                              ]                                                                                                                              (        2        )            Generating, from an original coordinate vector (cos ω, sin ω), a next coordinate vector (cos(ω+Δω), sin(ω+Δω)) may be performed by multiplying the original coordinate vector by the rotation matrix (2).
Generation of the next coordinate vector may be implemented in digital circuitry or in software with m sets of calculations each including one-bit shift and a addition/subtraction except for the multiplication by cos wk. The value m may be made larger in order to improve a resolution of rotation angle. The m sets of calculations may be repeated for each sampling period to generate, for example, a sequence of values cos(0), cos(1*Δω), cos(2*Δω), cos(3*Δω), . . . from x-coordinate of the coordinate vector.
The term of cos wk in equation (2) may be uniquely determined if the value m is determined. Accordingly, a correction with cos wk may be made at the final stage of calculation in each sampling period by one multiplication.
<3rd Related Art (Patent Document 1: US Patent Publication 2007-0040589)>
This technique utilizes a loop based on trigonometric identities such as shown in equation (3).cos(ω+(n+1)Δω)=2 cos(Δω)cos(ω+nΔω)−cos(ω+(n−1)Δω)  (3)Here, n is an integer equal to or lager than 1. By substituting M=2 cos(Δω) and an=cos(ω+nΔω), equation (3) may be expressed as (4), which is a recurrence equation between three successive terms, or a 2nd order recurrence equation.an+1=Man−an−1  (4)
Equation (4) indicates that the (n+1)th sinusoidal wave value can be calculated from the (n−1)th and n-th sinusoidal wave values and a coefficient M. Equation (4) may be expressed with a block diagram of a signal processing system show in FIG. 1. The system shown in FIG. 1 includes one-sampling-period delay elements 11 and 12, multiplier 21, adder 31, and a rounding circuit 41. When implementing the system with hardware, the delay elements 11 and 12 may be substituted with flip-flops.
According to the first related art, for example, 10 MHz sinusoidal wave may be expressed with 100 MHz sampling frequency by preparing a look-up table that stores a sequence of sinusoidal values at ten different phases cos(2π*0/10)=1, cos(2π*1/10), cos(2π*2/10), cos(2π*3/10), . . . cos(2π*9/10). However, spectrum of quantized sinusoidal wave having such a simple periodicity is known to have harmonic components at second, third, and higher harmonic frequencies due to quantization errors. That is, spectrum quality of the sinusoidal wave signal may be low. Such sinusoidal signals with harmonic components are not suitable for applications such as digital modulation/de-modulation systems.
On the other hand, in order to express 9 MHz sinusoidal wave with 100 MHz sampling frequency, the look-up table is required to store a sequence of sinusoidal values at 100 different phases cos(2π*0*9/100)=1, cos(2π*1*9/100), cos(2π*2*9/100), cos (2π*3*9/100), . . . cos(2π*99*9/100). In this case, periodicity of quantization errors in frequency domain is lowered and amounts of harmonic components are lowered. Accordingly, suitability for applications such as digital modulation/de-modulation system is improved.
However, the longer the repetition cycle of quantization errors, the larger the size of look-up table and required resources. Further, numerically controlled oscillators are designed to generate sinusoidal wave with arbitrary frequencies. In order to increase the degree of arbitrariness, the size of look-up table further increases.
In the second related art of CORDIC algorithm, rotation angle Δω may be determined arbitrarily by increasing the value of m. Accordingly, compared with the first related art, the problem of incorporation of harmonic components may be prevented.
However, as equation (2) indicates, m sets of calculations each including a bit-shift and an addition/subtraction and a multiplication to cancel the coefficient of 1/cos wk are required to be performed to the current sinusoidal wave value for generating the next sinusoidal wave value. Further, because the coordinate vector (cos ω, sin ω) is utilized, both sine and cosine values are required and amount of calculation in each sampling period becomes large.
Accordingly, the maximum available amount of calculation limits the sampling frequency. According to the sampling theorem of discrete signals, the limitation of sampling frequency limits the frequency of output sinusoidal wave. Thus, CORDIC algorithm may be suitably used to generate sine or cosine values at a specified angle, but is not suitably used in numerically controlled oscillators. Further, CORDIC algorithm generates the next sinusoidal wave value by multiplying the rotation vector to the current sinusoidal wave value. Because the current sinusoidal wave value is a quantized value, accumulation of quantization errors may distort output sinusoidal wave. For example, the amplitude of output sinusoidal wave may change.
Utilizing the loop shown in FIG. 1 of Patent Document 1 enables to reduce necessary resources. Further, the problem of harmonic components due to the periodicity of quantization errors can be solved because the rotation angle Δω per one sampling period may be set arbitrarily.
However, in the path shown by the arrow in FIG. 1 requires one multiplication and one addition/subtraction calculations, and these calculations are required to be performed within one sampling period. Accordingly, when a numerically controlled oscillator is implemented with hardware with the maximum clock frequency of about 200 MHz, for example, the sampling theorem of discrete signals limits the maximum frequency of output sinusoidal wave to about 100 MHz. Further, similar to the second related art, the third related art calculates the next sinusoidal wave value by using the previous sinusoidal wave value. Accordingly, the third related art also may have a problem of accumulation of quantization errors.